package org.example.weboj.service;

import org.example.weboj.dto.*;
import java.util.List;

public interface DebugService {
    /**
     * 启动调试会话
     */
    DebugSession startDebugSession(String sessionId, String code, String language, String input);
    
    /**
     * 获取调试会话
     */
    DebugSession getDebugSession(String sessionId);
    
    /**
     * 终止调试会话
     */
    void terminateDebugSession(String sessionId);
    
    /**
     * 设置断点
     */
    void setBreakpoints(String sessionId, List<Breakpoint> breakpoints);
    
    /**
     * 继续执行
     */
    void continueExecution(String sessionId);
    
    /**
     * 单步执行（step over）
     */
    void stepOver(String sessionId);
    
    /**
     * 步入执行（step into）
     */
    void stepInto(String sessionId);
    
    /**
     * 步出执行（step out）
     */
    void stepOut(String sessionId);
    
    /**
     * 暂停执行
     */
    void pauseExecution(String sessionId);
    
    /**
     * 获取调用栈
     */
    List<StackFrame> getStackTrace(String sessionId);
    
    /**
     * 获取变量信息
     */
    List<DebugVariable> getVariables(String sessionId, int frameId);
    
    /**
     * 求值表达式
     */
    String evaluateExpression(String sessionId, String expression);
} 